from pyspark import SparkConf, SparkContext

if __name__ == '__main__':
    # 构建SparkConf对象
    conf = SparkConf().setAppName("test").setMaster("local[*]")
    # 构建SparkContext执行环境入口对象
    sc = SparkContext(conf=conf)

    rdd = sc.parallelize([1, 2, 4, 6, 8, 9, 3],3)

    # print(rdd.glom().collect())
    # 分组结果 [[1, 2], [4, 6], [8, 9, 3]]

    def fn(list):
        print("--------------")
        result = []
        for item in list:
            result.append(item * 10)
        print(result)

    rdd.foreachPartition(fn).collect()
    """
    mapPartitions:功能与map类似，
    区别在于map是一条一条记录传递
    而mapPartitions每次传递的是一个分区的数据（作为一个list传递）
    """
    # 输出结果为
    # --------------
    # [10, 20]
    # --------------
    # [40, 60]
    # --------------
    # [80, 90, 30]

